package com.engc.common.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.engc.common.dao.DBExecuteException;

public interface CommonService {

	
	/**
	 * 调用此方法的Controller中方法必须自己实现事务
	 * 记录用户组织机构历史(生成用户组织机构关系或者关系变更时调用)
	 * @param usercode
	 * @param fromOrgid   前一个组织机构,如果是新增用户,则传送参数为 null
	 * @param toOrgid     要加入的组织机构,非空
	 * @throws DBExecuteException
	 */
	public void recordUserOrg(String usercode,String fromOrgid,String toOrgid) throws DBExecuteException;
	
	
	/**
	 * 下发白名单  (该方法只是例子)
	 * @param cardno   卡号
	 * @param cardstatus 卡状态
	 * @throws Exception
	 */
	public void issureWhiteRole( Integer cardno,Integer cardstatus) throws Exception ;
	
	
	/**
	 * 生成学生增量信息
	 * 当opertype=1时 如果用户的姓名以及组织机构没有变更,只是其他信息变更,不需要调用该方法
	 * @param usercode    
	 * @param username  
	 * @param orgid 
	 * @param opertype 0=新增  1=修改 2=删除
	 * @throws DBExecuteException  
	 */
	public void generateStudentIncreInfo(String usercode, String username, String orgid, Integer opertype,String xjzt,String sex) throws DBExecuteException; 
	
	
	/**
	 * 批量生成学生增量信息
	 * @param infoLs
	 * @throws DBExecuteException
	 */
//	public void batchGenerateStudentIncInfo(List<Map<String,Object>> infoLs) throws DBExecuteException; 
	
	/**
	 * 生成教师增量信息
	 * 如果修改用户信息,用户的姓名,组织机构和所教科目没有变更,不需要调用该方法
	 * @param usercode
	 * @param username
	 * @param orgid
	 * @param opertype
	 * @param subjectids 1,2,3
	 * @throws DBExecuteException
	 */
	public void generateTeacherIncreInfo(String usercode, String username, String orgid, Integer opertype,String subjectids,String sex) throws DBExecuteException;
	
	/**
	 * 生成学校增量信息
	 * @param orgid
	 * @param orgname
	 * @param orgtype
	 * @param opertype
	 * @throws DBExecuteException
	 */
	public void generateSchoolIncreInfo(String orgid, String orgname, String orgtype, Integer opertype,String areano) throws DBExecuteException; 

	/**
	 * 生成年级增量信息
	 * @param orgid
	 * @param orgname
	 * @param orgtype
	 * @param opertype
	 * @throws DBExecuteException
	 */
	public void generateGradeIncreInfo(String orgid,String fatherorgid, String orgname,String njzr,String njfzr,  Integer opertype) throws DBExecuteException; 
	
	
	/**
	 * 生成班级增量信息
	 * @param orgid 班级orgid
	 * @param gradeorgid 年级orgid
	 * @param orgname 班级名称
	 * @param bjzr 班主任
	 * @param opertype
	 * @throws DBExecuteException
	 */
	public void generateClassIncreInfo(String orgid,String gradeorgid, String orgname, String bjzr, Integer opertype) throws DBExecuteException; 

	

	/**
	 * 生成学年增量
	 * @param id
	 * @param name
	 * @param bjzr
	 * @param opertype
	 * @throws DBExecuteException
	 */
	public void generateSchoolYear(String id, String name,  Integer opertype) throws DBExecuteException; 
	
	
	
	
	/**
	 * 生成学期增量
	 * @param termid 学期id
	 * @param yearid 学年id
	 * @param skts   上课天数
	 * @param isdefault  是否默认学期
	 * @param begintime  开始时间
	 * @param endtime    结束时间
	 * @param dsz        是否启用单双周
	 * @param opertype   操作类型
	 * @throws DBExecuteException
	 */
	public void generateTermInfo(String termid,String yearid,Integer skts,String isdefault,String begintime,String endtime,String dsz,Integer opertype) throws DBExecuteException; 
	
	
	
	
	
	
	/**
	 * 生成科目增量信息 
	 * @param id  科目编号
	 * @param name 科目名称
	 * @param sfks  是否考试
	 * @param cjlx  成绩类型
	 * @param opertype  
	 * @throws DBExecuteException
	 */
	public void generateSubjectIncreInfo(String id, String name,String sfks,String cjlx,String orgtype,  Integer opertype) throws DBExecuteException;
	
	
	/**
	 * 行政机构增量信息生成
	 * @param id
	 * @param name
	 * @param fatherid
	 * @param opertype
	 * @throws DBExecuteException
	 */
	public void generateDeptIncreInfo(String id, String name,String fatherid,  Integer opertype) throws DBExecuteException;
	
	
	
	/**
	 * 获取发卡参数
	 * @return
	 */
	public String[] getCardAssistantInfo() ;
	
	
	/**
	 * 记录log操作日志
	 * @param request
	 * @param opermodule  操作模块
	 * @param logtype     操作类型 
	 * @param detail      操作详情  
	 * @throws DBExecuteException
	 */
	public void saveLogInfo(HttpServletRequest request,String opermodule,Integer logtype,String detail) throws DBExecuteException;

	/**
	 * 调用此方法的Controller中方法必须自己实现事务（JDBC）
	 * 记录用户组织机构历史(生成用户组织机构关系或者关系变更时调用)
	 * @param usercode
	 * @param fromOrgid   前一个组织机构,如果是新增用户,则传送参数为 null
	 * @param toOrgid     要加入的组织机构,非空
	 * @throws Exception
	 *//*
	public void recordUserOrgJDBC(Connection con,String usercode,String fromOrgid,String toOrgid) throws Exception;
	
	*//**
	 * jdbc connection 查询条数
	 * @param con
	 * @param sql
	 * @param parameter
	 * @return
	 * @throws Exception
	 *//*
	public int queryInt(Connection con, String sql, Object... parameter) throws Exception;
	
	
	
	*//**
	 * jdbc connection 执行更新语句
	 * @param con
	 * @param sql
	 * @param parameter
	 * @return
	 * @throws Exception
	 *//*
	public int executeUpdate(Connection con, String sql, Object... parameter) throws Exception;
	
	
	
	*//**
	 * jdbc sql查询,返回第一个字段的值
	 * @param con
	 * @param sql  select xx from table where column=? 
	 * @param parameter
	 * @return
	 * @throws Exception
	 *//*
	public Object queryForObject(Connection con, String sql, Object... parameter) throws Exception;
	
	*//**
	 * jdbc sql查询,返回属性MAP
	 * @param con
	 * @param sql  select xx from table where column=? 
	 * @param parameter
	 * @return
	 * @throws Exception
	 *//*
	public Map<String,Object> queryForMap(Connection con, String sql, Object... parameter) throws Exception;
	
	*//**
	 * jdbc sql查询,返回属性MAP
	 * @param con
	 * @param sql  select xx from table where column=? 
	 * @param parameter
	 * @return
	 * @throws Exception
	 *//*
	public List<Map<String,Object>> queryForList(Connection con, String sql, Object... parameter) throws Exception;
	
	*//**
	 * 生成学生增量信息
	 * 当opertype=1时 如果用户的姓名以及组织机构没有变更,只是其他信息变更,不需要调用该方法
	 * @param usercode    
	 * @param username  
	 * @param orgid 
	 * @param opertype 0=新增  1=修改 2=删除
	 * @throws DBExecuteException  
	 *//*
	public void generateStudentIncreInfoJDBC(Connection con,String usercode, String username, String orgid, Integer opertype) throws Exception; 
	
	*//**
	 * 批量生成学生增量信息
	 * @param infoLs
	 * @throws DBExecuteException
	 *//*
	public void batchGenerateStudentIncInfoJDBC(Connection con,List<Map<String,Object>> infoLs) throws Exception; 	
	
	*//**
	 * 记录log操作日志(JDBC)
	 * @param request
	 * @param opermodule  操作模块
	 * @param logtype     操作类型 1=新增 2=修改 3=删除
	 * @param detail      操作详情  
	 * @throws DBExecuteException
	 *//*
	public void saveLogInfoJDBC(Connection con,HttpServletRequest request,String opermodule,Integer logtype,String detail) throws Exception;*/

	
}
